Untiy 笔记 | 您所在的位置:网站首页 › unity canvas › Untiy 笔记 |
这是一个整合和翻译,利用写笔记的方式去理解 Unity。 ▌Canvas 帆布 :Canvas 是一个 GameObject,上面有 Canvas 组件(Component)所有 UI 元件都必须是 Canvas 的子元件使用 EventSystem 进行事件处理如果同时存在多个 Canvas,Sort Order 值大的显示在前创建新的 UI 元件时会自动创建 Canvas,并为此 Canvas 的子元件。 ▌Draw order of elements 绘制元件的次序 :按照 Hierarchy 层次结构中显示的顺序绘制。如果两个UI元件重叠,则后一个元件将显示在前一个元件的顶部。 可以通过在 Transform component 的这些方法从脚本控制顺序: GetSiblingIndex()SetAsFirstSibling()SetAsLastSibling()SetSiblingIndex(int index)GetSiblingIndex() : 获取 sibling 索引 如果 GameObject 共享相同的父级,这些 GameObject 被称为 sibling。简单来讲就是同级。 sibling 索引显示每个 GameObject 在此 sibling Hierarchy 层次结构中的位置。 SetAsFirstSibling() : 设定为 sibling 的第一个SetAsLastSibling() : 设定为 sibling 的最后一个SetSiblingIndex(int index) : 直接设定 sibling 索引 更多可参看: Unity - Scripting API: Transform.GetSiblingIndexUnity - Scripting API: Transform.SetAsFirstSibling Unity - Scripting API: Transform.SetAsLastSibling Unity - Scripting API: Transform.SetSiblingIndex ▌Render Modes 渲染模式 :Screen Space - OverlayScreen Space - CameraWorld Space▌Screen Space - Overlay 屏幕空间 - 叠加 :将 UI 元件放置在 scene 场景上,如果调整屏幕大小或更改分辨率,Canvas将自动更改大小以匹配此大小。 ▌Screen Space - Camera 屏幕空间 - 相机 :Canvas 放置在指定的 Camera 前的既定距离。 Rect Transform会被锁定Canvas 的宽高会保持和屏幕的宽高一致相机设置会影响 UI 的外观▌World Space 世界空间 :视为三維物品。 Canvas 的大小可以由 Rect Transform 手动设置。 UI 元件将基于 3D 放置在场景中的其他对象的前面或后面呈现。这对于要成为世界一部分的 UI 非常有用。这也被称为 diegetic interface (叙事界面)。 更多可参看: Unity3D学习笔记uGUI(9):Canvas详述-腾讯游戏学院 Unity学习笔记——UGUI Canvas - 掘金unity 搞懂Canvas的Render Mode的三种模式 - fdyshlk的博客 - CSDN博客 ▌Render Modes 下的渲染优先级:▌Screen Space - Overlay 的渲染顺序:当有多个 canvas 并且渲染模式都为 Overlay。由 Sort Order 决定的,值越大的越后渲染。 不受摄像机的 Depth 值影响。 ▌Screen Space-Camera 的渲染顺序:依次由 Render Camera 的 Depth 值、Sorting Layer 先后顺序、Order in Layer 值决定 Render Camera 不同时,由 Render Camera 的 Depth 决定Render Camera 相同时,由 Sorting Layer 先后顺序决定Render Camera 相同时,Sorting Layer 相同,由 Order in Layer 值决定 当有多个 canvas 并且渲染模式都为 Camera由 Rendener Camera 的 Depth 值决定,值越大越后渲染。 如果 Depth 值相同,那么由 Sorting Layer 顺序决定,顺序越后则越后渲染。 如果 Depth 值和 Layer 值都相同的情况下,渲染顺序由 Order in Layer 决定,值越大越后渲染。(注意:若Rendener Camera都是同一个摄像机,则不考虑Depth情况) ▌World Space 的渲染顺序:当有多个canvas并且 Render Modes 都为 World Space 。 这种情况下,渲染顺序由canvas组件下的 Sorting Layer 顺序决定,顺序越后则越后渲染。 如果 Layer 值都相同的情况下,渲染顺序由Order in Layer决定,值越大越后渲染。 特别注意,当 Layer 和 Order 值都相同的情况下,此时渲染顺序由canvas距离Render Camera的距离决定,距离越近越后渲染。( 只有World模式有这种情况,因其他模式下canvas都是位置固定不可移动的。并且以上情况只考虑canvas都出现在Render Camera摄像范围的情况下。) ▌当有多个 canvas 并且渲染模式都存在的情况下:Screen Space - Overlay 的 canvas 永远是最后渲染。同为 Screen Space - Overlay 的 canvas 在 Sort Order 的值越大时越后渲染。 Screen Space - Overlay 和 Screen Space-Camera 同时存在的情况下有两种情况: 若使用的不同的相机,则由摄像机的 Depth 决定,值越大越后渲染。若使用的是相同的相机,则是由 canvas 距离摄像机的距离决定的,距离越近的越后渲染。 交叉參考修改至: UGUI渲染优先级 - zhangzhen551的专栏 - CSDN博客UGUI学习(二)渲染模式和层级顺序 - nanzhengluo的博客 - CSDN博客 [Render Modes 下的渲染优先级] 的部分我不懂,所以纯粹复制整合。 ___ 参考至: Unity - Manual: Canvas UI Canvas - Unity UGUI的深度 - 简书 Unity - Scripting API: Transform.GetSiblingIndex Unity - Scripting API: Transform.SetAsFirstSibling Unity - Scripting API: Transform.SetAsLastSibling Unity - Scripting API: Transform.SetSiblingIndex Unity3D学习笔记uGUI(9):Canvas详述-腾讯游戏学院Unity学习笔记——UGUI Canvas - 掘金 unity 搞懂Canvas的Render Mode的三种模式 - fdyshlk的博客 - CSDN博客 UGUI渲染优先级 - zhangzhen551的专栏 - CSDN博客 UGUI学习(二)渲染模式和层级顺序 - nanzhengluo的博客 - CSDN博客 ___ Untiy 笔记 - 目录 - 知乎 |
CopyRight 2018-2019 实验室设备网 版权所有 |